home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 7.9 KB | 230 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWLnkMgr.h
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef FWLNKMGR_H
- #define FWLNKMGR_H
-
- #ifndef FWLNKDST_H
- #include "FWLnkDst.h"
- #endif
-
- #ifndef FWLNKSRC_H
- #include "FWLnkSrc.h"
- #endif
-
- #ifndef FWPRTDEF_H
- #include "FWPrtDef.h"
- #endif
-
- #ifndef FWSTDDEF_H
- #include "FWStdDef.h"
- #endif
-
- #ifndef FWRUNTYP_H
- #include "FWRunTyp.h"
- #endif
-
- #ifndef FWODTYPS_H
- #include "FWODTyps.h"
- #endif
-
- //========================================================================================
- // Forward Declarations
- //========================================================================================
-
- class FW_CCloneInfo;
- class FW_CPart;
- class FW_CPartLinkSourceIterator;
- class FW_CPartLinkDestIterator;
- class FW_CLinkMgrLinkIterator;
- class FW_CPresentation;
- class FW_CLinkSource;
- class FW_CLinkDestination;
- class FW_CString;
-
- class ODLinkSource;
- class ODLink;
- class ODStorageUnit;
-
- //========================================================================================
- // class FW_CLinkManager - abstract base class that manages Linking
- //========================================================================================
-
- class FW_CLinkManager
- {
- friend class FW_CPartLinkSourceIterator;
- friend class FW_CPartLinkDestIterator;
- friend class FW_CLinkMgrLinkSourceIterator;
- friend class FW_CLinkMgrLinkDestIterator;
-
- public:
- FW_DECLARE_AUTO(FW_CLinkManager)
-
- //----------------------------------------------------------------------------------------
- // Constructors/Destructors
- //
- public:
- FW_CLinkManager(Environment* ev, FW_CPart* thePart);
- virtual ~FW_CLinkManager();
-
- void RemoveAllLinks(Environment* ev);
-
- //----------------------------------------------------------------------------------------
- // Methods that must be overridden
- //
- public:
- virtual FW_CLinkSource* NewLinkSource(Environment* ev,
- ODUpdateID updateID,
- FW_CPresentation* presentation) = 0;
- virtual FW_CLinkDestination* NewLinkDestination(Environment* ev,
- ODLink* odLink,
- ODLinkInfo* linkInfo,
- FW_CPresentation* presentation) = 0;
-
- virtual FW_CLinkSource* DoInternalizeOneSourceLink(Environment* ev,
- ODStorageUnit* storageUnit,
- ODUpdateID updateID);
- virtual FW_CLinkDestination* DoInternalizeOneDestLink(Environment* ev, ODStorageUnit* storageUnit,
- ODLink* odLink, ODLinkInfo* linkInfo);
-
- virtual ODValueType GetSourceLinkFormat(Environment* ev) = 0;
- virtual ODValueType GetDestLinkFormat(Environment* ev) = 0;
-
- //----------------------------------------------------------------------------------------
- // Methods that may be overridden
- //
- public:
- virtual ODLinkSource* CreateLink(Environment* ev, ODByteArray* data);
-
- virtual void DoChangeLinkStatus(Environment* ev, ODFrame* odFrame);
- // formerly named LinkStatusChanged
-
- virtual void DoUpdateLinks(Environment* ev,
- ODFrame* odEmbeddedFrame,
- ODUpdateID updateID);
- // formerly named EmbeddedFrameUpdated
-
- virtual FW_Boolean EditInLinkAttempted(Environment* ev, ODFrame* odFrame);
- virtual void RevealLink(Environment* ev, ODLinkSource* odLinkSource);
-
- virtual FW_Boolean GetLinkInfoString(Environment* ev, FW_CString& infoString);
-
- protected:
- virtual FW_CLinkDestination* PrivMakeLink(Environment* ev,
- ODLink* odLink,
- ODPasteAsResult& pasteAsResult,
- FW_CPresentation* presentation);
-
- //----------------------------------------------------------------------------------------
- // Methods that cannot be overridden
- //
- public:
- FW_CLinkDestination* PasteWithLink(Environment* ev, ODStorageUnit* storageUnit,
- ODPasteAsResult& pasteAsResult,
- FW_CFrame* frame,
- FW_StorageKinds storageKind);
-
- void BreakSourceLink(Environment* ev, FW_CLinkSource* linkSource);
- void BreakDestinationLink(Environment* ev, FW_CLinkDestination* linkDest);
-
- void RestoreSourceLink(Environment* ev, FW_CLinkSource* linkSource);
- void RestoreDestinationLink(Environment* ev, FW_CLinkDestination* linkDest);
-
- void ExternalizeLinks(Environment* ev, ODStorageUnit* su,
- FW_CCloneInfo* cloneInfo);
- void InternalizeLinks(Environment* ev, ODStorageUnit* storageUnit);
-
- void InternalizeSourceLink(Environment* ev, ODID linkID,
- ODStorageUnit* storageUnit);
- void InternalizeDestLink(Environment* ev, ODID linkID,
- ODStorageUnit* storageUnit);
-
- void RegisterLinks(Environment* ev);
-
- FW_CLink* GetSelectedLink(Environment* ev);
- void SelectLink(Environment* ev, FW_CLink* link);
- FW_Boolean ShowLinkInfo(Environment* ev, FW_CFrame* frame);
-
- FW_Boolean EditInLinkAlert(Environment* ev, FW_CLinkDestination* linkDest, FW_CFrame* frame);
-
- private:
- void PrivInternalizeOneSourceLink(Environment* ev, ODStorageUnit* storageUnit);
- void PrivInternalizeOneDestLink(Environment* ev, ODStorageUnit* storageUnit);
-
- void PrivShowLinkSource(Environment* ev, FW_CLinkDestination* link);
- short PrivShowEditInLinkAlert(Environment* ev);
-
- //----------------------------------------------------------------------------------------
- // Utility methods
- //
- public:
- FW_CLinkSource* GetPendingClipboardLink(Environment* ev) const;
- void SetPendingClipboardLink(Environment* ev, FW_CLinkSource* linkSource);
- void DeletePendingClipboardLink(Environment* ev);
-
- void AddToSourceLinkList(Environment* ev, FW_CLinkSource* linkSource);
- void RemoveFromSourceLinkList(Environment* ev, FW_CLinkSource* linkSource);
-
- void AddToDestLinkList(Environment* ev, FW_CLinkDestination* linkDest);
- void RemoveFromDestLinkList(Environment* ev, FW_CLinkDestination* linkDest);
-
- unsigned long CountSourceLinks(Environment* ev) const;
- unsigned long CountDestinationLinks(Environment* ev) const;
-
- FW_CLinkSource* ODtoFWLinkSource(Environment* ev, ODLinkSource* odLinkSource) const;
- FW_CLinkDestination* ODtoFWLink(Environment* ev, ODLink* odLink) const;
-
- FW_CLinkSource* GetPendingDropLink(Environment* ev) const;
- void PrivSetPendingDropLink(Environment* ev, FW_CLinkSource* linkSource, FW_CFrame* scopeFrame = NULL);
-
- //----------------------------------------------------------------------------------------
- // Data Members
- //
- protected:
- FW_CPart* fPart;
- FW_CLinkSource* fPendingClipboardLink;
-
- private:
- FW_CLinkSource* fPendingDropLink;
- FW_TOrderedCollection<FW_CLinkSource>* fSourceLinkList;
- FW_TOrderedCollection<FW_CLinkDestination>* fDestLinkList;
- };
-
-
- //========================================================================================
- // Inlines
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CLinkManager::GetPendingClipboardLink
- //----------------------------------------------------------------------------------------
- inline FW_CLinkSource* FW_CLinkManager::GetPendingClipboardLink(Environment*) const
- {
- return fPendingClipboardLink;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CLinkManager::SetPendingClipboardLink
- //----------------------------------------------------------------------------------------
- inline void FW_CLinkManager::SetPendingClipboardLink(Environment*, FW_CLinkSource* linkSource)
- {
- fPendingClipboardLink = linkSource;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CLinkManager::GetPendingDropLink
- //----------------------------------------------------------------------------------------
- inline FW_CLinkSource* FW_CLinkManager::GetPendingDropLink(Environment*) const
- {
- return fPendingDropLink;
- }
-
-
- #endif
-